﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using LiquidacionComisionREST.Dominio;
using NHibernate;
using System.Data.SqlClient;

namespace LiquidacionComisionREST.Persistencia
{
    public class CategoriaDAO : BaseDAO <Categoria, String>
    {

        //El método carga la lista de categorias disponibles
        public List<Categoria> listarCategorias(string codigo, string nombre)
        {            
            string consulta = string.Empty;
            List<Categoria> lstCategorias = new List<Categoria>();
            Categoria categoria = new Categoria();
            consulta = "SELECT Codigo, Nombre, Precio FROM [Liquidaciones].[dbo].[Categorias] ";            

            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(consulta, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.HasRows)
                        {
                            while (resultado.Read())
                            {
                                categoria = new Categoria();
                                categoria.Codigo = (string)resultado["Codigo"];
                                categoria.Nombre = (string)resultado["Nombre"];
                                categoria.Precio =  float.Parse(resultado["Precio"].ToString());                                
                                if ((categoria.Codigo.ToUpper().Contains(codigo.ToUpper()) && !codigo.Equals(string.Empty)) || (categoria.Nombre.ToUpper().Contains(nombre.ToUpper()) && !nombre.Equals(string.Empty)) || (codigo.Equals(string.Empty) && nombre.Equals(string.Empty)))
                                {
                                    lstCategorias.Add(categoria);
                                }
                            }
                        }

                    }
                }
            }         
            return lstCategorias;
        }


        //El método 
        public Boolean validarUsoCategoria(string codigo)
        {
            string consulta = string.Empty;
            consulta = "SELECT COUNT(1) AS contador FROM [Liquidaciones].[dbo].[Agentes] WHERE [Categoria] ='" + codigo + "'";                       

            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(consulta, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.HasRows)
                        {
                            while (resultado.Read())
                            {
                                int numero = (int)resultado["contador"];
                                if (numero > 0) {
                                    return true;
                                }                             
                            }
                        }

                    }
                }
            }
            return false;
        }


    }
}